    org  07c00h                 ; 加载到 0:7C00 处
    ; 下面是跳转指令（占3B）：
    jmp short LABEL_START       ; 跳转到代码起始处
    nop                         ; 这个nop（无操作指令）不可少（占1个字节位）
    ; 下面是OEM名串（占8B）：
    BS_OEMName  DB 'MyOS 1.0' ; OEM String, 必须 8 个字节（不足补空格）
    ; 下面是 FAT12 磁盘的头（BPB+EBPB，占51B）
    BPB_BytsPerSec  DW 512      ; 每扇区字节数
    BPB_SecPerClus  DB 1        ; 每簇多少扇区
    BPB_RsvdSecCnt  DW 1        ; Boot记录占用多少扇区
    BPB_NumFATs DB 2        ; 共有多少 FAT 表
    BPB_RootEntCnt  DW 224      ; 根目录文件数最大值
    BPB_TotSec16    DW 2880     ; 逻辑扇区总数
    BPB_Media       DB 0xF0     ; 介质描述符
    BPB_FATSz16 DW 9        ; 每FAT扇区数
    BPB_SecPerTrk   DW 18       ; 每磁道扇区数
    BPB_NumHeads    DW 2        ; 磁头数(盘面数)
    BPB_HiddSec     DD 0        ; 隐藏扇区数
    BPB_TotSec32    DD 0        ; BPB_TotSec16为0时这个值记录扇区数
    BS_DrvNum       DB 0        ; 中断13h的驱动器号（硬/U盘时为0x80）
    BS_Reserved1        DB 0        ; 未使用
    BS_BootSig      DB 29h      ; 扩展引导标记 (29h)
    BS_VolID        DD 12345678h; 卷序列号
    BS_VolLab       DB 'MyOS System'; 卷标, 必须 11 个字节（不足补空格）
    BS_FileSysType  DB 'FAT12   '   ; 文件系统类型, 必须 8个字节（不足补空格）  

LABEL_START:
    mov ax, cs      ; 置DS和ES=CS
    mov ds, ax
    mov es, ax
    call    ScrollPg        ; 向上滚动显示页   
    call    DispStr1     ; 调用显示字符串例程
    call    DispStr2     ; 调用显示字符串例程
    jmp $           ; 无限循环
DispStr1:
    mov ah,13h      ; BIOS中断的功能号（显示字符串）
    mov al,1            ; 光标放到串尾
    mov bh,0        ; 页号=0
    mov bl,1Ah      ; 字符颜色
    mov cx,strlen1       ; 串长=16
    mov dh,0ah ; 第10行
    mov dl,23h ; 第35列
    mov bp,BootMsg1  ; ES:BP=串地址
    int 10h             ; 调用10H号显示中断
    ret             ; 从例程返回
DispStr2:
    mov ah,13h      ; BIOS中断的功能号（显示字符串）
    mov al,1            ; 光标放到串尾
    mov bh,0        ; 页号=0
    mov bl,1Ah      ; 字符颜色
    mov cx,strlen2       ; 串长=16
    mov dh,0ch ; 第12行
    mov dl,1eh ; 第30列
    mov bp,BootMsg2  ; ES:BP=串地址
    int 10h             ; 调用10H号显示中断
    ret             ; 从例程返回
ScrollPg: ; 清屏例程
    mov ah, 6           ; 功能号
    mov al, 0           ; 滚动的文本行数（0=整个窗口）
    mov bh, 1Ah         ; 设置插入空行的字符颜色为 蓝底亮绿色 00011010
    mov ch, 0           ; CH=行号、CL=列号
    mov cl, 0           ; 窗口左上角的(行号，列号) = (0, 0)
    mov dh, 24      ; 窗口右下角的行号，文本屏幕25行，行号=0~24
    mov dl, 79      ; 窗口右下角的列号，文本屏幕80列，列号=0~79
    int 10h         ; 显示中断
    ret

BootMsg1:  db  "My OS 1.0" ; 显示用字符串
    strlen1 equ $ - BootMsg1
BootMsg2:  db  "(C) 2017 by Chen Xiaofeng" ; 显示用字符串
    strlen2 equ $ - BootMsg2
times 510-($-$$) db 0   ; 用0填充剩下的扇区空间（软盘无分区表）
db  55h, 0aah           ; 引导扇区结束标志

; 填充两个FAT表的头两个项（每个FAT占8个扇区）
    db 0f0h, 0ffh, 0ffh         ; 介质描述符（F0h）和Fh、结束簇标志项FFFh
    times 512*9-3       db  0   ; 用0填充FAT#1剩下的空间
    db 0f0h, 0ffh, 0ffh         ; 介质描述符（F0h）和Fh、结束簇标志项FFFh
    times 512*9-3       db  0   ; 用0填充FAT#2剩下的空间
; 根目录中的卷标条目
    db 'MyOS System'            ; 卷标, 必须 11 个字节（不足补空格）
    db 8                        ; 文件属性值（卷标条目的为08h）
    dw 0,0,0,0,0                ; 10个保留字节
    dw 5DA0h,467Fh          ; 创建时间，设为2015年3月31日11时45分0秒
    dw 0                        ; 开始簇号（卷标条目的必需为0）
    dd 0                        ; 文件大小（也设为0）
